import Cookie from "js-cookie"
export default {
    state: {
        isCollapse: false, //控制菜单的展开还是收起
        tabsList: [
            {
                path: "/",
                name: "home",
                label: "首页",
                icon: "s-home",
                url: "Home/Home",
            }
        ], //面包屑数据
        menu:[]
    },
    mutations: {
        //修改菜单展开收起的方法
        collapseMenu(state) {
            state.isCollapse = !state.isCollapse
        },
        //更新面包屑数据
        selectMenu(state, val) {
            // console.log(val,'val')
            //判断添加的数据是否为首页
            if ('home' !== val.name) {
                const index = state.tabsList.findIndex(item => item.name === val.name)
                //如果不存在
                if (index === -1) {
                    state.tabsList.push(val)
                }
            }

        },

        // 删除指定的 tag 数据，第一个参数是固定的
        closeTag(state, item) {
            // console.log(item,'item')
            const index = state.tabsList.findIndex(val => val.name === item.name);
            //进行删除 删除当前索引的一条数据
            state.tabsList.splice(index, 1);
        },
        //设置menu的数据
        setMenu(state,val){
            state.menu = val
            //将字符串转为json
            Cookie.set('menu',JSON.stringify(val))
        },
        //动态注册路由
        addMenu(state,router){
            //判断当前缓存中是否有数据
            if(!Cookie.get('menu')) return
            //将json数据转成数组
            const menu = JSON.parse(Cookie.get('menu'))
            state.menu = menu
            //组装动态路由的数据
            const menuArray = []
            menu.forEach(item => {
                if(item.children){
                    item.children = item.children.map(item =>{
                        item.component = () =>import(`../views/${item.url}`)
                        return item
                    })
                    //...扩展运算符将数据展开放到数组中
                    menuArray.push(...item.children)
                }else{
                    item.component = () => import(`../views/${item.url}`) 
                    menuArray.push(item)
                }                
            })
            console.log(menuArray,'menuArray')
            //路由的动态添加
            menuArray.forEach(item =>{
                router.addRoute('Main',item)
            })

        }

    }
}
